/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.figmania.controlador;


import br.figmania.modelo.Usuario;
import br.figmania.repositorio.Dao;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;

/**
 *
 * @author Henrique
 */
public class UsuarioControlador {
    
    
    private Dao repositorio = new Dao();
    
    public void criarPerfil(HttpServletRequest request, HttpServletResponse response) throws ParseException, IOException, ServletException{
        
        
        HttpSession secao = request.getSession();
        Usuario usuario = new Usuario();
        String nome = request.getParameter("nome");
        String dt_nascimento = request.getParameter("dt_nascimento");
        String idade = request.getParameter("idade");
        String cid_atual = request.getParameter("cid_atual");
        String esp_favorito = request.getParameter("esp_favorito");
        String email = request.getParameter("email");
        String time = request.getParameter("time_favorito");
        
        int marcador = 0;
       
        if (nome.equals("")){
        secao.setAttribute("validaNome","Preencha seu nome!");
        marcador ++;
            
        } else usuario.setNome(nome);
            
        if (dt_nascimento.equals("")){    
            
        secao.setAttribute("validaData","Coloque a data!" );
        marcador ++;
        }
        if (idade.equals("")){
            
        secao.setAttribute("validaIdade","Preencha sua idade!" );
        marcador ++;  
       } else usuario.setIdade(Integer.parseInt(idade));
       
       if (cid_atual.equals("")){
        secao.setAttribute("validaCidade","Coloque o nome da cidade!" );
        marcador ++;
        
       } else usuario.setCidade(cid_atual);
       
       if (esp_favorito.equals("")){
           
        secao.setAttribute("validaEsporte","Coloque um esporte favorito!" );
        marcador ++;
       } else usuario.setEsporte(esp_favorito);
       
       if (email.equals("")) {
           
        secao.setAttribute("validaEmail","Digite o seu email!" );
         
        marcador ++;
       } else usuario.setEmail(email); 
       
       if (time.equals("")){
         secao.setAttribute("validaTime","Digite um time!" );  
       } else usuario.setTimes(time);
       
       if (marcador == 0){
        DateFormat formatadorData = new SimpleDateFormat("dd/MM/yyyy");
        Date data = new Date(formatadorData.parse(dt_nascimento).getTime());
                       
        usuario.setData(data);
        usuario.setIdade(Integer.parseInt(idade));
        boolean statusUsuario = repositorio.inserirObjeto(usuario);
        
        secao.setAttribute("usuario", usuario);
        response.sendRedirect("home.jsp");
        
        
       } else  {
           
       secao.setAttribute("usuario", usuario);
       request.setAttribute("nome", nome);
       request.setAttribute("dt_nascimento", dt_nascimento);
       request.setAttribute("idade", idade);
       request.setAttribute("cid_atual", cid_atual);
       request.setAttribute("email", email);
       request.setAttribute("time_favorito",time );
       request.setAttribute("esp_favorito", esp_favorito);
       
       RequestDispatcher rd = request.getRequestDispatcher("cadastro_perfil.jsp");
       rd.forward(request, response);
       
       }
                              
    }
    
    public void editarPerfil(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        
       HttpSession secao = request.getSession();
       Usuario usuario = (Usuario) secao.getAttribute("usuario");
       DateFormat formatadorData = new SimpleDateFormat("dd/MM/yyyy");
       
       response.sendRedirect("cadastro_perfil.jsp?nome="+usuario.getNome()+"&dt_nascimento="+
               formatadorData.format(usuario.getData())+"&idade="+usuario.getIdade()+
               "&cid_atual="+usuario.getCidade()+"&email="+usuario.getEmail()+"&time_favorito="+usuario.getTimes()+
               "&esp_favorito="+usuario.getEsporte()+"&chamarControlador=updateUsuario");       
        
    }
    
    public void updateUsuario(HttpServletRequest request, HttpServletResponse response) throws ParseException, IOException{
        
        HttpSession secao = request.getSession();
        Usuario usuario = (Usuario) secao.getAttribute("usuario");
        String nome = request.getParameter("nome");
        String dt_nascimento = request.getParameter("dt_nascimento");
        String idade = request.getParameter("idade");
        String cid_atual = request.getParameter("cid_atual");
        String esp_favorito = request.getParameter("esp_favorito");
        String email = request.getParameter("email");
        String time = request.getParameter("time_favorito");
        
        
        DateFormat formatadorData = new SimpleDateFormat("dd/MM/yyyy");
        Date data = new Date(formatadorData.parse(dt_nascimento).getTime());
         
        usuario.setNome(nome);
        usuario.setData(data);
        usuario.setIdade(Integer.parseInt(idade));
        usuario.setCidade(cid_atual);
        usuario.setEmail(email);
        usuario.setTimes(time);
        usuario.setEsporte(esp_favorito);        
        
        boolean status = repositorio.atualizarObjeto(usuario); 
        
        if (status){
            
            secao.setAttribute("usuario", usuario);
        }
        
        JOptionPane.showMessageDialog(null, ""+status);
        
        response.sendRedirect("home.jsp");
        
    }
    
    public Usuario buscarUmUsuario(String id_convidado){
        
        List<Usuario> usuario = (List<Usuario>) repositorio.listarObjeto("FROM Usuario WHERE id ='"+id_convidado+"' ");
        
        return usuario.get(0);
        
    }
    
    public boolean buscarUsuarioParaMostrarPerfil (HttpServletRequest request,String id){
     
        HttpSession secao = request.getSession();
        
        List <Usuario> usuario = (List<Usuario>) repositorio.listarObjeto("FROM Usuario WHERE id = '"+id+"'");
        
        secao.setAttribute("verPerfil", usuario.get(0));
        
                
        return true;   
        
        
    }
    
    
    
}
